/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.model.service;

import com.model.domain.tiempo.Periodo;
import com.model.domain.tiempo.ProgramacionPeriodo;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;


/**
 *
 * @author Rdelacruz
 */
public class PeriodoService 
extends AbstractService
{
    private ProgramacionPeriodoService programacionPeriodoService;
            
    public Periodo findByAnhoMesPeriodo(Connection con, String anho, String mes, String periodo) throws SQLException {
        Periodo p = new Periodo();
        p.setCodigo(periodo);
        setearFechaInicioByAnhoMesPeriodo(con,p,anho,mes,periodo);
        return p;
    }
    
    public void setearFechaInicioByAnhoMesPeriodo(Connection con, Periodo p, String anho, String mes, String periodo) throws SQLException {
        if(periodo==null)
            return ;
        
        ProgramacionPeriodo pp;
        try {
            pp = programacionPeriodoService.findByAnhoMes(con, anho, mes);
            p.setFechaInicio(pp.getPeriodoByCodigo(periodo).getFechaInicio());
        } catch (ParseException ex) {
            throw new SQLException(ex);
        }
        
    }
        
    public List<Periodo> findAll(Connection con) throws SQLException {
        List<Periodo> lista = new ArrayList<Periodo>();
        Statement st = null;
        try {                        
            st = con.createStatement();
            String sql = "select CodPer, NomPer from Periodo";
            ResultSet rs = st.executeQuery(sql);            
            while(rs.next()) {
                Periodo obj = new Periodo();
                obj.setCodigo(rs.getString(1));
                obj.setNombre(rs.getString(2).toUpperCase());
                lista.add(obj);
            }
        }
        finally {
            if(st!=null) st.close();
        }
        return lista;
    }

    public ProgramacionPeriodoService getProgramacionPeriodoService() {
        return programacionPeriodoService;
    }

    public void setProgramacionPeriodoService(ProgramacionPeriodoService programacionPeriodoService) {
        this.programacionPeriodoService = programacionPeriodoService;
    }

    

    

    
    
}
